package com.zuipin.mapper;

import java.math.BigDecimal;
import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.zuipin.entity.BaseDictionaryData;
import com.zuipin.entity.product.ProductPrice;
import com.zuipin.vo.BackProInfoPrice;
import com.zuipin.vo.ProductPriceVo;

import net.sf.json.JSONObject;

/**
 * 商品价格数据操作接口类 
 *
 * @ClassName ProductPriceMapper 
 * @author wangcongyi
 * @date 2017年4月20日 上午10:34:12
 */
@Mapper
public interface ProductPriceMapper {
	
	// 通过商品ID和系统ID获取商品价格列表(排除代理价)
	List<ProductPrice> selectByProId(JSONObject object);
	
	// 通过商品ID和系统ID获取商品价格列表(不排除代理价)
	List<ProductPrice> findByProId(JSONObject object);
	
	// 通过商品Sku和系统ID获取商品价格列表(不排除代理价)
	List<ProductPrice> findByProSku(JSONObject object);
	
	// 通过商品ID和系统删除商品价格信息
	int deleteByProId(JSONObject object);
	
	// 批量添加商品价格信息
	int insertBatch(List<ProductPrice> productPrices);
	
	// 通过商品ID和系统ID获取商品代理价
	ProductPrice selectAgentsByProId(JSONObject params);
	
	// 获取商品该平台下未设置价格的类型
	List<BaseDictionaryData> getSetablePriceType(@Param("price") ProductPrice price);
	
	// 获取该商品已设置价格的类型列表数据
	List<ProductPrice> getSettledPrice(@Param("price") ProductPrice price);
	
	int deleteByPrimaryKey(Long id);
	
	int insert(ProductPrice record);
	
	int insertSelective(ProductPrice record);
	
	ProductPrice selectByPrimaryKey(Long id);
	
	int updateByPrimaryKeySelective(ProductPrice record);
	
	int updateByPrimaryKey(ProductPrice record);
	
	// 通过商品ID和系统ID获取 价格名字和价格
	List<ProductPriceVo> findByProductId(@Param("sysId") Long sysId, @Param("proId") Long proId);
	
	/** 
	 * 根据商品类型获取价格
	 * 
	 * @Title: findByType 
	 * @author: wuyicheng
	 * @date: 2017年8月8日下午2:01:33 
	 * @param proId 商品Id
	 * @param sysId 系统ID
	 * @param priceType 商品类型 
	 * @return
	 * @return: ProductPrice
	 * @throws 
	 */
	ProductPrice findByType(@Param("proId") Long proId, @Param("sysId") Long sysId, @Param("priceType") Long priceType);
	
	/**
	 * 更据商品ID获取不同平台的不同类型价格
	 */
	List<BackProInfoPrice> findProInfoPrice(@Param("proId") Long proId);
	
	int updateBackProInfoPrice(ProductPrice record);
	
	// 查询商品联营结算价
	BigDecimal findSupplyPrice(@Param("proId") Long proId);
}